import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Solution1072 {
    public int maxEqualRowsAfterFlips(int[][] matrix) {
        int ans=0;
        Map<List<Integer>,Integer> map=new HashMap<>();
        for (int[] ints : matrix) {
            List<Integer> l1=new ArrayList<>();
            List<Integer> l2=new ArrayList<>();
            for (int i=0;i<ints.length;i++){
                if (ints[i]==0){
                    l1.add(i);
                }else {
                    l2.add(i);
                }
            }
            map.putIfAbsent(l1,0);
            map.putIfAbsent(l2,0);
            map.put(l1,map.get(l1)+1);
            map.put(l2,map.get(l2)+1);
            ans=Math.max(ans,map.get(l1));
            ans=Math.max(ans,map.get(l2));
        }
        return ans;
    }

    public static void main(String[] args) {
        System.out.println(new Solution1072().maxEqualRowsAfterFlips(new int[][]{{0,0,0},{0,0,1},{1,1,0}}));
    }
}
